package com.hexiang;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

//代码生成器
public class CodeGenerator {
    public static void main(String[] args) {
        String sqlurl="jdbc:mysql://192.168.29.18:2881/ds_ac?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8";     //数据库的url
        String sqlusername="root@bfstest";  //数据库的登录名
        String sqlpassword="yz{[qE3WU4~";  //数据库的登录密码
        String outputDir="D:\\com\\smy\\src\\main\\java";  //生成代码的指定目录，一般配置成自己的工程目录下的java路径，即包名“com.example.demo”的目录
        String packageName="com.smy.bfs";  //配置包名“com.example.demo”
        String mapperXmlOutFilePath="D:\\com\\smy\\src\\main\\resources\\mapper\\";  //mapperXml文件的输出目录
        String[] sqlTableNameArray={"ads_apicost_calculate_by_cap","ads_apicost_calculate_by_zhongshou"};  //要对应的数据库中的表名

        generate(sqlurl,
                sqlusername,
                sqlpassword,
                outputDir,
                packageName,
                mapperXmlOutFilePath,
                sqlTableNameArray);  //调用代码生成器函数

    }

    //生成代码方法
    private static void generate(String sqlurl,
                                 String sqlusername,
                                 String sqlpassword,
                                 String outputDir,
                                 String packageName,
                                 String mapperXmlOutFilePath,
                                 String[] sqlTableNameArray){
        FastAutoGenerator.create(sqlurl, sqlusername, sqlpassword)  //数据库连接配置，必不可少的一个配置
                .globalConfig(builder -> {  //全局配置
                    builder.author("hexiang") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir(outputDir); // 指定输出目录
                })
                .packageConfig(builder -> {   //包配置
                    builder.parent(packageName) // 设置父包名
                            .moduleName(null) // 设置父包模块名,可以设置为空，默认在包名之下,设置成null，防止生成双斜杠问题
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, mapperXmlOutFilePath)); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(sqlTableNameArray) // 设置需要生成的表名
                            .addTablePrefix("t_","v_", "sys","dw_hc_ac","ads_"); // 设置过滤表前缀,忽略一些表头，如“sys_user”,填写了sys，就会忽略sys，生成user
                })
                .execute();

    }
}